@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <http://esipfed.org/toolmatch/0/3/ont.owl#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl2xml: <http://www.w3.org/2006/12/owl2-xml#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://esipfed.org/toolmatch/0/3/ont.owl>
    dc:date "2012-12-03"^^xsd:date ;
    a owl:Ontology ;
    rdfs:comment "Tool Match Ontology created by ESIP Semantic Web Cluster."^^xsd:string ;
    rdfs:label "Tool Match Ontology"^^xsd:string ;
    owl:versionInfo "0.3"^^xsd:string .

:AuxiliaryLatLonGrid
    a :DataGridType, owl:Thing .

:CF1Convention
    a :DataConvention, owl:Thing .

:DataAccess
    a owl:Class .

:DataCollection
    a owl:Class .

:DataCollectionRule1
    a owl:Class ;
    rdfs:subClassOf :DataCollection, [
        a owl:Class ;
        owl:intersectionOf ([
                a owl:Restriction ;
                owl:hasValue :IDV ;
                owl:onProperty :mappedBy
            ]
            [
                a owl:Restriction ;
                owl:hasValue :McIDAS-V ;
                owl:onProperty :mappedBy
            ]
            [
                a owl:Restriction ;
                owl:hasValue :Panoply ;
                owl:onProperty :mappedBy
            ]
        )
    ] ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DataCollection
            [
                a owl:Class ;
                owl:unionOf ([
                        a owl:Restriction ;
                        owl:hasValue :OPeNDAP ;
                        owl:onProperty :hasAccessibility
                    ]
                    [
                        a owl:Restriction ;
                        owl:hasValue :NetCDF ;
                        owl:onProperty :hasDataFormat
                    ]
                )
            ]
            [
                a owl:Class ;
                owl:unionOf ([
                        a owl:Restriction ;
                        owl:hasValue :AuxiliaryLatLonGrid ;
                        owl:onProperty :usesGridType
                    ]
                    [
                        a owl:Restriction ;
                        owl:hasValue :RegularLatLonGrid ;
                        owl:onProperty :usesGridType
                    ]
                )
            ]
            [
                a owl:Restriction ;
                owl:hasValue :CF1Convention ;
                owl:onProperty :usesConvention
            ]
        )
    ] .

:DataCollectionRule2
    a owl:Class ;
    rdfs:subClassOf :DataCollection, [
        a owl:Class ;
        owl:intersectionOf ([
                a owl:Restriction ;
                owl:hasValue :Ferret ;
                owl:onProperty :mappedBy
            ]
            [
                a owl:Restriction ;
                owl:hasValue :GrADS ;
                owl:onProperty :mappedBy
            ]
        )
    ] ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DataCollection
            [
                a owl:Class ;
                owl:unionOf ([
                        a owl:Restriction ;
                        owl:hasValue :OPeNDAP ;
                        owl:onProperty :hasAccessibility
                    ]
                    [
                        a owl:Restriction ;
                        owl:hasValue :NetCDF ;
                        owl:onProperty :hasDataFormat
                    ]
                )
            ]
            [
                a owl:Restriction ;
                owl:hasValue :CF1Convention ;
                owl:onProperty :usesConvention
            ]
            [
                a owl:Restriction ;
                owl:hasValue :RegularLatLonGrid ;
                owl:onProperty :usesGridType
            ]
        )
    ] .

:DataCollectionRule3
    a owl:Class ;
    rdfs:subClassOf :DataCollection, [
        a owl:Restriction ;
        owl:hasValue :Ferret ;
        owl:onProperty :griddedBy
    ] ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DataCollection
            [
                a owl:Class ;
                owl:unionOf ([
                        a owl:Restriction ;
                        owl:hasValue :OPeNDAP ;
                        owl:onProperty :hasAccessibility
                    ]
                    [
                        a owl:Restriction ;
                        owl:hasValue :NetCDF ;
                        owl:onProperty :hasDataFormat
                    ]
                )
            ]
            [
                a owl:Restriction ;
                owl:hasValue :CF1Convention ;
                owl:onProperty :usesConvention
            ]
            [
                a owl:Restriction ;
                owl:hasValue :AuxiliaryLatLonGrid ;
                owl:onProperty :usesGridType
            ]
        )
    ] .

:DataConvention
    a owl:Class ;
    rdfs:subClassOf owl:Thing .

:DataFormat
    a owl:Class .

:DataGridType
    a owl:Class ;
    rdfs:subClassOf :DataConvention .

:Ferret
    a :Tool, owl:Thing .

:GrADS
    a :Tool, owl:Thing .

:GrADSDataServer
    a :DataAccess, owl:Thing .

:Hyrax
    a :DataAccess, owl:Thing .

:IDV
    a :Tool, owl:Thing .

:McIDAS-V
    a :Tool, owl:Thing .

:MyMapCollection
    :hasAccessibility :WMS ;
    a :DataCollection, owl:Thing .

:NetCDF
    a :DataFormat, owl:Thing .

:OPeNDAP
    a :DataAccess, owl:Thing .

:OPeNDAPAccessibleDataCollection
    a owl:Class ;
    rdfs:subClassOf :DataCollection, [
        a owl:Restriction ;
        owl:hasValue :OPeNDAP ;
        owl:onProperty :hasAccessibility
    ] ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DataCollection
            [
                a owl:Class ;
                owl:unionOf ([
                        a owl:Restriction ;
                        owl:hasValue :GrADSDataServer ;
                        owl:onProperty :hasAccessibility
                    ]
                    [
                        a owl:Restriction ;
                        owl:hasValue :Hyrax ;
                        owl:onProperty :hasAccessibility
                    ]
                    [
                        a owl:Restriction ;
                        owl:hasValue :ThreddsDataServer ;
                        owl:onProperty :hasAccessibility
                    ]
                    [
                        a owl:Restriction ;
                        owl:hasValue :erddap ;
                        owl:onProperty :hasAccessibility
                    ]
                )
            ]
        )
    ] .

:OpenLayers
    a :Tool, owl:Thing .

:OpenLayersCompatibleCollection
    a owl:Class ;
    rdfs:subClassOf :DataCollection ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (:DataCollection
            [
                a owl:Restriction ;
                owl:hasValue :WMS ;
                owl:onProperty :hasAccessibility
            ]
        )
    ] .

:Panoply
    a :Tool, owl:Thing .

:RegularLatLonGrid
    a :DataGridType, owl:Thing .

:TestDataCollection
    :hasAccessibility :Hyrax ;
    :usesConvention :CF1Convention ;
    :usesGridType :RegularLatLonGrid ;
    a :DataCollection, owl:Thing .

:ThreddsDataServer
    a :DataAccess, owl:Thing .

:Tool
    a owl:Class .

:WMS
    a :DataAccess, owl:Thing .

:compatibleWith
    a owl:ObjectProperty .

:erddap
    a :DataAccess, owl:Thing .

:griddedBy
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :visualizedBy .

:grids
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :visualizes ;
    owl:inverseOf :griddedBy .

:hasAccessibility
    a owl:ObjectProperty ;
    rdfs:domain :DataCollection ;
    rdfs:range :DataAccess .

:hasDataFormat
    a owl:ObjectProperty .

:mappedBy
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :visualizedBy ;
    owl:inverseOf :maps .

:maps
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :visualizes .

:usesConvention
    a owl:ObjectProperty .

:usesGridType
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :usesConvention .

:visualizedBy
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :compatibleWith ;
    owl:inverseOf :visualizes .

:visualizes
    a owl:ObjectProperty ;
    rdfs:subPropertyOf :compatibleWith .

dc:date
    a owl:AnnotationProperty .

owl:Thing
    a owl:Class .

